// 方案 1
function recursionFlat(ary = []) {
  const res = []
  ary.forEach(item => {
    if (Array.isArray(item)) {
      res.push(...recursionFlat(item))
    } else {
      res.push(item)
    }
  })
  return res
}
// 方案 2
function reduceFlat(ary = []) {
  return ary.reduce((res, item) => res.concat(Array.isArray(item) ? reduceFlat(item) : item), [])
}
// 方案三
function flat_1(arr=[]){
  return arr.flat(Infinity);
}
// var arr = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
// arr.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

// 测试
const source = [1, 2, [3, 4, [5, 6]], '7']
console.log(recursionFlat(source))
console.log(reduceFlat(source))
